package com.ccys.db.mapper;

import com.ccys.db.dto.app.callVideoScreen.GetListLaboratoryDto;
import com.ccys.db.dto.app.callVideoScreen.GetListLaboratoryForChildDto;
import com.ccys.db.dto.app.getStarted.GetDoctorListV3Dto;
import com.ccys.db.dto.app.medicationsSelectScreen.GetPharmaciesDto;
import com.ccys.db.dto.app.preConsultDrugAllergies.UpdateBookingDto;
import com.ccys.db.dto.app.subscriptionAddDependant.InviteDependantSubscriptionDto;
import com.ccys.db.dto.web.productAndService.SupplierDto;
import com.ccys.db.entity.TblSupplier;
import com.ccys.db.vo.app.callVideoScreen.GetBookingCdmpDetailVo;
import com.ccys.db.vo.app.callVideoScreen.GetListLaboratoryVo;
import com.ccys.db.vo.app.deliveryAddress.GetDeliveryAddressInfoVo;
import com.ccys.db.vo.app.deliveryTimeSlot.GetTimeSlotsV3Vo;
import com.ccys.db.vo.app.getStarted.*;
import com.ccys.db.vo.app.home.*;
import com.ccys.db.vo.app.medicationsSelectScreen.GetPharmaciesVo;
import com.ccys.db.vo.app.paymentDetails.CalculationCostVo;
import com.ccys.db.vo.app.subscriptionAddDependant.FamilyInfoVo;
import com.ccys.db.vo.app.paymentDetails.GetCardListVo;
import com.ccys.db.vo.userManagement.SelectSupplierWebVO;
import com.ccys.db.vo.web.productAndService.SupplierVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

import java.util.List;

/**
* Created by Mybatis Generator on 2023/12/08
*/
@Component
public interface TblSupplierMapper extends Mapper<TblSupplier>, MySqlMapper<TblSupplier> {


    List<SupplierVo> getList(SupplierDto dto);

       /**
        * @description 查询可选择供应商
        * @date     2024/1/3
        * @author   cloud fly
        */
    List<SelectSupplierWebVO> listSelectSupplier(TblSupplier dto);


    String canShowPaypalPrompt(String id);


    Integer getNotificationCount(String id);


    CdmpRebuyVo getBookingCdmpRebuy(String id);

    List<ActiveBookingVo> getActiveBooking(String id);


    List<GuideVo> getGuides(String id);

    List<InAppServicesVo> getInAppServices(String id);

    List<FamilyVo> family(String id);

    List<FamilyResVo.DependantVo> getFamilyDependants(String id);

    List<FamilyResVo.InviterVo> getFamilyInviters(String id);


    List<ActiveActionVo.subscriptionInvitationVo> getSubscriptionInvitations(String id);

    List<ActiveActionVo.SubscriptionRemovalVo> getSubscriptionRemovals(String id);

    List<ActiveActionVo.DependantInvitationVo> getDependantInvitations(String Id);

    List<ActiveActionVo.SharingChildInvitationVo> getSharingChildInvitations(String id);


    LatestAppointmentVo.HomeNotification getLatestHomeNotification(String id);

    LatestAppointmentVo.AppointmentVo getLatestAppointment(String id);

    Integer getSingtelIsActive(String id);


    void checkAndRemoveAppliedPromoCode(String id);


    List<String> getEapDoctorIds(String profile_benefit_id);

    List<GetDoctorListV3Vo.DoctorVo> getDoctorListV3(GetDoctorListV3Dto dto);

    List<GetConsultProfileVo> getConsultProfile(Integer serviceType,String id);


    List<GetListLaboratoryVo.LaboratoryVo> getListLaboratory(@Param("dto") GetListLaboratoryDto dto, @Param("id") String id);

    List<GetListLaboratoryVo.LaboratoryVo> getListLaboratoryForChild(GetListLaboratoryForChildDto dto);


    List<GetBookingCdmpDetailVo> getBookingCdmpDetail(String id);

    List<String> getSymptomIdsByName(@Param("symptoms") List<UpdateBookingDto.SymptomVo> symptoms);

    void deleteBookingSymptom(String bookingId);

    void deleteBookingMedications(String bookingId);

    void deleteBookingAllergies(String bookingId);

    void deleteBookingMedicationReactions(String bookingId);

    void deleteBookingEmergencyContact(String bookingId);

    List<GetDeliveryAddressInfoVo.DeliveryAddressVo> getDeliveryAddressInfo(String id);

    List<GetPharmaciesVo.PharmacyVo> getPharmacies(GetPharmaciesDto dto);

    List<GetTimeSlotsV3Vo.TimeSlotVo> getTimeSlotsV3Today();

    List<GetTimeSlotsV3Vo.TimeSlotVo> getTimeSlotsV3NextDay();

    Integer getExpressEnable();


    List<GetCardListVo> getCardList(String id);

    MemberInfoVo getMemberInfo(String id);

    Integer getConsultCount(String id,String profileId,long startOfYear,long currentTime);

    void deleteDependantSubscription(String profile_id,List<InviteDependantSubscriptionDto.DependantVo> dependant_ids);

    FamilyInfoVo getFamilyInfoByMemberId(String id,String profile_id,String active_code);


    String getMemberIdByBookingId(String bookingId);

    List<Integer> getPromoCodeCount(String id,String code);

    CalculationCostVo calculationCost(String bookingId);
}
